# 以下三行是汉化过程中测试用代码，学习者在自己的环境中应删除或注释掉
导入 sys
导入 os
sys.path.追加(os.路径.绝对路径(r'G:\grasspy_zwmodules\selenium\zwselenium\src'))


from 自动访问 import 驱动
从 自动访问.驱动 导入 〇动作链
从 自动访问.驱动.公用.动作.动作构建器 导入 〇动作构建器
从 自动访问.驱动.公用.依据 导入 〇依据
from 自动访问.驱动.edge.服务 import 〇服务
从 时间 导入 睡眠

服务 = 〇服务(可执行文件路径="G:\grasspy_zwmodules\selenium\edgedriver_win64\msedgedriver.exe")
老司机 = 驱动.Edge(服务=服务)

def test_right_click(老司机):
    老司机.获取('https://selenium.dev/selenium/web/mouse_interaction.html')

    clickable = 老司机.查找元素(〇依据.ID, "clickable")
    〇动作链(老司机)\
        .右键点击(clickable)\
        .完成()

    睡眠(2)
    assert 老司机.查找元素(〇依据.ID, "click-status").text == "context-clicked"

# test_right_click(老司机)

def test_double_click(老司机):
    老司机.获取('https://selenium.dev/selenium/web/mouse_interaction.html')

    clickable = 老司机.查找元素(〇依据.ID, "clickable")
    〇动作链(老司机)\
        .双击(clickable)\
        .完成()

    assert 老司机.查找元素(〇依据.ID, "click-status").text == "double-clicked"

# test_double_click(老司机)

def test_hover(老司机):
    老司机.获取('https://selenium.dev/selenium/web/mouse_interaction.html')

    hoverable = 老司机.查找元素(〇依据.ID, "hover")
    〇动作链(老司机)\
        .移至元素(hoverable)\
        .完成()

    assert 老司机.查找元素(〇依据.ID, "move-status").text == "hovered"

# test_hover(老司机)

def test_move_by_offset_from_element(老司机):
    老司机.获取('https://selenium.dev/selenium/web/mouse_interaction.html')

    mouse_tracker = 老司机.查找元素(〇依据.ID, "mouse-tracker")
    〇动作链(老司机)\
        .移至元素_偏移(mouse_tracker, 8, 0)\
        .完成()

    coordinates = 老司机.查找元素(〇依据.ID, "relative-location").文本.分割(", ")
    打印(coordinates)
    assert 绝对值(整型(coordinates[0]) - 100 - 8) < 2

# test_move_by_offset_from_element(老司机)

def test_move_by_offset_from_viewport_origin_ab(老司机):
    老司机.获取('https://selenium.dev/selenium/web/mouse_interaction.html')

    action = 〇动作构建器(老司机)
    action.指针动作.移至位置(8, 0)
    action.完成()

    coordinates = 老司机.查找元素(〇依据.ID, "absolute-location").文本.分割(", ")
    打印(coordinates)
    assert 绝对值(整型(coordinates[0]) - 8) < 2

# test_move_by_offset_from_viewport_origin_ab(老司机)

def test_move_by_offset_from_current_pointer_ab(老司机):
    老司机.获取('https://selenium.dev/selenium/web/mouse_interaction.html')

    action = 〇动作构建器(老司机)
    action.指针动作.移至位置(6, 3)
    action.完成()

    〇动作链(老司机)\
        .偏移(13, 15)\
        .完成()

    coordinates = 老司机.查找元素(〇依据.ID, "absolute-location").文本.分割(", ")
    打印(coordinates)
    assert 绝对值(整型(coordinates[0]) - 6 - 13) < 2
    assert 绝对值(整型(coordinates[1]) - 3 - 15) < 2

# test_move_by_offset_from_current_pointer_ab(老司机)

def test_drag_and_drop_onto_element(老司机):
    老司机.获取('https://selenium.dev/selenium/web/mouse_interaction.html')

    draggable = 老司机.查找元素(〇依据.ID, "draggable")
    droppable = 老司机.查找元素(〇依据.ID, "droppable")
    〇动作链(老司机)\
        .拖放(draggable, droppable)\
        .完成()

    assert 老司机.查找元素(〇依据.ID, "drop-status").文本 == "dropped"

# test_drag_and_drop_onto_element(老司机)

def test_drag_and_drop_by_offset(老司机):
    老司机.获取('https://selenium.dev/selenium/web/mouse_interaction.html')

    draggable = 老司机.查找元素(〇依据.ID, "draggable")
    start = draggable.位置
    finish = 老司机.查找元素(〇依据.ID, "droppable").位置
    〇动作链(老司机)\
        .拖放_偏移(draggable, finish['x'] - start['x'], finish['y'] - start['y'])\
        .暂停(2)\
        .完成()

    assert 老司机.查找元素(〇依据.ID, "drop-status").文本 == "dropped"

# test_drag_and_drop_by_offset(老司机)